package com.mrx.xfriendship.model.dto;

import com.mrx.xfriendship.model.vo.PageVO;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 通用的 分页 DTO
 *
 * @author Mr.X
 * @since 2023-01-15 07:41
 */
@Data
public class PageDTO<T extends Serializable> implements Serializable {

    /**
     * 当前 页
     */
    private Integer page;

    /**
     * 当前 页大小
     */
    private Integer size;

    /**
     * 当前 数据量
     */
    private Integer count;

    /**
     * 所有 数据量
     */
    private Long total;

    /**
     * 当前 页面数据
     */
    private List<T> data;

    public static <T extends Serializable> PageDTO<T> newPage(PageVO vo, List<T> data, long total) {
        PageDTO<T> pageDTO = new PageDTO<>();
        pageDTO.setSize(vo.getSize());
        pageDTO.setPage(vo.getPage());

        pageDTO.setData(data);
        pageDTO.setCount(data.size());
        pageDTO.setTotal(total);
        return pageDTO;
    }

}
